#ifndef _AUGASSIGN_H_
#define _AUGASSIGN_H_
#include "ast/stmtType.h"
#include "ast/exprType.h"
#include "ast/operatorType.h"
#include "AstTypes.h"
class IVisitor;
class AugAssign;
typedef QSharedPointer<AugAssign> AugAssignPtr;

class AugAssign: public stmtType
{
public:
    explicit AugAssign(const exprTypePtr& target, int op, const exprTypePtr& value, int nodeId=-1);
    virtual ~AugAssign();
    
    
    exprTypePtr target();
    void setTarget(const exprTypePtr& target);
    
    int op();
    void setOp(int op);
    
    exprTypePtr value();
    void setValue(const exprTypePtr& value);
    
    
    virtual Ast::AstTypes type() const;
    virtual QString toString() const;
    virtual void accept(IVisitor* visitor, const SimpleNodePtr& node);
    virtual void traverse(IVisitor* visitor);
private:
    exprTypePtr _target;
    int _op;
    exprTypePtr _value;
};




#endif